package org.petstore.util;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.*;

/**
 * 购物车 购物车总价 = 遍历CartItem总价 求和
 */
public class Cart implements Serializable {

    private static final long serialVersionUID = 8329559983943337176L;

    private List<CartItem> cartItemList;

    public Cart() {
        cartItemList = null;
    }

    public Cart(List<CartItem> itemList) {
        this.cartItemList = itemList;
    }

    public List<CartItem> getCartItems() {
        return cartItemList;
    }

    public List<CartItem> getCartItemList() {
        return cartItemList;
    }

    /**
     * description 获取购物车有多少的行商品(有多少CartItem)
     *
     * @return int
     * @author huangzhangyan
     * @date 2022/1/10 15:52
     */
    public int getNumberOfCartItems() {
        if (cartItemList == null) {
            return 0;
        }
        return cartItemList.size();
    }

    /**
     * description 获取购物车中 某行商品的总价 ,通过itemID
     *
     * @param itemId:
     * @return BigDecimal
     * @author huangzhangyan
     * @date 2022/1/10 16:00
     */
    public BigDecimal getItemTotal(String itemId) {
        BigDecimal total = new BigDecimal("0");
        List<CartItem> cartItemList = getCartItemList();
        //遍历找到
        for (CartItem cartItem : cartItemList) {
            String s = cartItem.getItem().getItemId();
            if (itemId.equals(s)) {
                total = cartItem.getCartItemTotal();
                return total;
            }
        }
        return total;
    }

    /**
     * description 添加CartItem进购物车 (不用考虑商品是否在购物车中 商品在不在购物车中该方法会处理)
     *
     * @param cartItem:
     * @author huangzhangyan
     * @date 2022/1/10 16:01
     */
    public void addCartItem(CartItem cartItem) {
        //遍历判断购物车中是否有该商品
        for (CartItem currentCartItem : cartItemList) {
            if (currentCartItem.getItem().getItemId().equals(cartItem.getItem().getItemId())) {
                //商品在购物车中 数量+=
                currentCartItem.setQuantity(currentCartItem.getQuantity() + cartItem.getQuantity());
                return;
            }
        }
        //不在购物车中
        cartItemList.add(cartItem);
    }


    /**
     * 购物车的总价值 遍历CartItem总价 求和
     */
    public BigDecimal getSubTotal() {
        BigDecimal total = new BigDecimal("0");
        List<CartItem> cartItemList = getCartItemList();
        //遍历
        if (cartItemList != null) {
            for (CartItem items : cartItemList) {
                BigDecimal cartItemTotal = items.getCartItemTotal();
                total = total.add(cartItemTotal);
            }
        }
        return total;
    }

    @Override
    public String toString() {
        return "Cart{" + ", itemList=" + cartItemList + '}';
    }

    /**
     * description 删除购物车的CartItem 全部删除该商品的数量
     *
     * @param cartItem:
     * @author huangzhangyan
     * @date 2022/1/10 16:03
     */
    public void addCartItemIgnoreQuantity(CartItem cartItem) {
        //遍历判断购物车中是否有该商品
        for (CartItem currentCartItem : cartItemList) {
            if (currentCartItem.getItem().getItemId().equals(cartItem.getItem().getItemId())) {
                //商品在购物车中
                currentCartItem.setQuantity(0);
                return;
            }
        }
        //不在购物车中
    }

}
